Naming

Descripcion

Consejos sobre como nombrar los diferentes elementos de codigo

Naming

El nombre de una variable, funcion o clase debe de responder a estas preguntas:

Un nombre debe de revelar cual es su intención

Si un nombre necesita de un comentario para ser explicado es que su nombre está mal puesto

Evitar desinformación

Tenemos que evitar posibles casos en los que se puedan confundir ciertos conceptos sin querer.

Tener cuidado cuando se ponen nombres parecidos, es importante hacer distinciones evidentes.

Ejemplo MAL

XYZControllerForEfficientHandlingOfStrings

XYZControllerForEfficientStorageOfStrings

Esas dos variables son muy largas, muy parecidas y tienen funcionalidades muy distintas, es un mal ejemplo

Ejemplo BIEN

countMembers
countSkills

Este ejemplo es mucho mejor, los dos nombres empiezan igual, pero es facil diferenciar el uno del otro y la funcionalidad que hacen debería de ser parecida solo que orientada a objetos distintos

Poner nombres con significado

Usar nombres pronunciables y nombres que puedan ser facilmente buscados

En vez de tener una funcion geAlSk sería mejor tener una funcion getAllSkills, ya que tiene un significado y es algo que se puede pronunciar

Si usamos una variable con nombre e será dificil buscar en el código si usamos un buscador, en cambio si usamos una variable como numberOfLetters será mucho mas facil buscarla

Usar solo una palabra por concepto

Si queremos añadir algo no usemos en un lugar add en otro insert y asi... debemos de coger una sola palabra y ser consistentes a lo largo de todo el código

Añadir contexto que tenga significado

Si por ejemplo tenemos variables name y surname pueden significar una cosa, pero si tenemos addrName y addrSurname siguen siendo lo mismo pero en un contexto diferente, es importante contextualizar los nombres que usemos para dar mas información

Otra manera de contextualizar variables es haciendo que sean parta de una nueva clase, en este caso podríamos tener la clase Address y dentro los miembros name y surname

Al igual que es importante incluir un contexto que le dé significado, también es importante no intentar incluir contexto de más si no es necesario o no aporta ninguna información valiosa.

Longitud de los nombres

La longitud de los nombres que utilicemos debe de ser proporcional a la longitud del contexto en el que se usen, si tenemos una variable que se usa a lo largo de varias funciones y varias líneas de código el nombre de la variable tendrá que tener un tamaño considerable, ya que tiene que tener un nombre que le dé un significado explicito.

Por el contrario si vamos a usar una variable en un numero pequeño de linea podemos incluso tener variables de una sola letra, ya que al estar en un contexto pequeño sabemos exactamente a que hacen referencia y no necesitamos tener un nombre que sea muy descriptivo.

Palabras de ejemplo segun conceptos
Obtener Añadir Eliminar Convertir Obtener Backend
  • get
  • read
  • obtain
  • receive
  • collect
  • retrieve
  • take
  • acquire
  • add
  • insert
  • create
  • attach
  • put
  • append
  • join
  • remove
  • delete
  • erase
  • cancel
  • cut
  • convert
  • map
  • translate
  • change
  • cast
  • make
  • receive
  • load
  • populate
  • fetch
Clases

Las clases deben de ser nombradas como Nombres o Frases de nombres por ejemplo Customer o AdressParser

Una clase NO debe de ser nombrada con un verbo

Metodos

Los metodos deben de ser nombrados como verbos o Frases de verbos como por ejemplo save o deletePage

Cuando un constructor es sobrecargado es mejor usar funciones static con un nombre que describa el argumento:

En vez de:

Complex fulcrumPoint = new Complex(23.0);

Usar una funcion estatica como:

Complex fulcrumPoint = Complex.FromRealNumber(23.0);

Para asegurarnos de que se use la funcion static podemos declarar el constructor como privado

Tags

Clean Code | Naming | variables